<!DOCTYPE html>
<html lang="en">
<head>
  <meta charset="UTF-8">
  <title>函数优化</title>
  <script>
    // 1. 默认值函数（老式做法）
    function add(a,b){
      b = b || 0
      return a + b
    }
    // let s = add(1)
    // console.log("s = ",s)

    // 2. 不定参数(参数个数不固定)
    function sum(...args){
      // 2.1 定义一个求和变量
      let s = 0
      for (let i = 0; i < args.length; i++) {
        s += args[i]
      }
      // 2.2 输出求和变量的值
      console.log("所有数字之和：",s)
    }
    // sum(1,2,3,4,5)

    // 3. 箭头函数 （非常重要）
    // 3.1 无参数的箭头函数
    let fun1 = () => {
      console.log("参数的箭头函数。")
    }
    // fun1()
    // 3.2 有一个参数的箭头函数，此时可以省略参数前后的一对小括号！
    let fun2 = name => {
      console.log(name + ",你好！")
    }
    // fun2("小明")
    // 3.3 有多个参数的箭头函数
    let fun3 = (name,sex,age,addr) => {
      console.log("姓名：",name)
      console.log("性别：",sex)
      console.log("年龄：",age)
      console.log("住址：",addr)
    }
    // fun3("张三","男",22,"杭州")
    // 3.4 带有返回值的箭头函数,只有一行代码时，可以省略{}及return语句。
    let fun4 = (name,sex,addr) => `姓名:${name},性别：${sex},住址：${addr}`
    let info = fun4("小红","女","上海")
    console.log(info)

    // 3.5 箭头函数与解构表达式一起使用（非常非常重要，后面经常使用）
    let person = {
      "name": "罗成",
      "age": 128,
      "addr":'山西晋城'
    }
    let fun5 = ({name,age,addr}) => {
      console.log("姓名：",name)
      console.log("年龄：",age)
      console.log("住址：",addr)
    }
    fun5(person)
  </script>
</head>
<body>
</body>
</html>
